编译指示

FENV_ACCESS (C++11)

on(1) #pragma STDC FENV_ACCESS on
off(2) #pragma STDC FENV_ACCESS off

访问浮点环境

如果设置为 on,则程序会通知编译器它可能会访问 浮点环境 来测试它的 状态标志 (异常)或者运行在 控制模式 下而不是默认模式。

如果设置为 off,则编译器可能会做一些特定的优化来破坏这些测试和模式的改变,因此访问之前描述的 浮点环境 的话,会导致 未定义 行为。

这个编译指示的状态是 onoff 取决于编译器设置和库实现。

这个编译指示声明应该出现在:

  • 在任何外部声明外 :它的作用持续到遇到另一个 FENV_ACCESS 编译指示,或直到 编译单元 结束。
  • 在复合语句中 :这种情况下,它会优先于所有显示的声明和语句。它的作用持续到遇到另一个 FENV_ACCESS 编译指示(例如在一个内嵌的复合语句中),或直到复合语句的结束。复合语句结束后,编译指示的状态会重新被存储为进入它之前的状态。

如果这个编译指示出现在其他上下文中,则行为未定义。

当状态被这个编译指示直接改变时,浮点控制模式 (例如 舍入方向 )拥有它们默认的设置,但 浮点标志 的状态是不确定的。

另请参见

函数 描述
fegetenv 获得浮点环境 (函数)
fesetenv 设置浮点环境 (函数)